package util;

import org.eclipse.swt.graphics.Region;

//UI的工具类
public class GraphicsUtil {
	
	//获取一个圆角矩形
	public static Region createRoundedRectangle(int x, int y, int W, int H, int r) {
	    Region region = new Region();
	    int d = (2 * r); // diameter

	    region.add(circle(r, (x + r), (y + r)));
	    region.add(circle(r, (x + W - r), (y + r)));
	    region.add(circle(r, (x + W - r), (y + H - r)));
	    region.add(circle(r, (x + r), (y + H - r)));

	    region.add((x + r), y, (W - d), H);
	    region.add(x, (y + r), W, (H - d));

	    return region;
	}
	
	//获取一个圆角
	private static int[] circle(int r, int offsetX, int offsetY) {
	    int[] polygon = new int[8 * r + 4];
	    // x^2 + y^2 = r^2
	    for (int i = 0; i < 2 * r + 1; i++) {
	        int x = i - r;
	        int y = (int) Math.sqrt(r * r - x * x);
	        polygon[2 * i] = offsetX + x;
	        polygon[2 * i + 1] = offsetY + y;
	        polygon[8 * r - 2 * i - 2] = offsetX + x;
	        polygon[8 * r - 2 * i - 1] = offsetY - y;
	    }
	    return polygon;
	}
	//====================================================根据图片的透明部分获取一个多边形Composite
//	public MusicList(Composite parent, int style) {
//		super(parent, style);
//		Region allRegion = new Region(); 
//		allRegion.add(0, 0, getSize().x, getSize().y);
//		allRegion.subtract(handleTransparenceRegion(getBackgroundImage(), style, style));
//		setRegion(allRegion);
//		
//	}
//	private Region handleTransparenceRegion(Image image, int offsetX, int offsetY) {    
//	    Region region = new Region();    
//	    final ImageData imageData = image.getImageData();    
//	    if (imageData.alphaData != null) {    
//	        Rectangle pixel = new Rectangle(0, 0, 1, 1);    
//	        for (int y = 0; y < imageData.height; y++) {    
//	            for (int x = 0; x < imageData.width; x++) {    
//	                if (imageData.getAlpha(x, y) != 255) {    
//	                    pixel.x = imageData.x + x + offsetX;     
//	                    pixel.y = imageData.y + y + offsetY;               
//	                    region.add(pixel);    
//	                }    
//	             }    
//	         }    
//	     }    
//	   return region;    
//	}   
}
